package com.itheima._08泛型支持的类型;

/**
 * @Description Demo081
 * @Author GreenHand_Lu
 * @Date 2025-07-19
 */
public class Demo081 {
    public static void main(String[] args) {
        // 目标：搞清楚泛型和集合不支持基本数据类型，只能支持对象类型（引用数据类型）。
        // 0、泛型和集合都不支持基本数据类型。
        // 1、把基本数据类型变成包装类对象。
        //    new Integer(a);已过时，不建议使用
        //    Integer.valueOf(a) 推荐
        Integer i2 = Integer.valueOf(100);
        // 面试题
        Integer i3 = 100;
        Integer i4 = 100;
        System.out.println(i3 == i4);// ture
        Integer i5 = 200;
        Integer i6 = 200;
        System.out.println(i5 == i6);// false
        // 因为JDK为了提升操作常用数字的性能，将-128~127的数字放入缓存池中，所以这个范围内的数字直接从缓存池中获取，内存地址是一样的。

        // 2、把基本数据类型变成包装类对象。Java支持自动装箱：基本类型的数据可以直接变成包装类型的对象。
        int i7 = 100;
        Integer i8 = i7;
        // 3、把包装类对象变成基本数据类型。Java支持自动拆箱：包装类对象可以直接变成基本数据类型。、
        int i9 = i8;

        // 注意企业实践：推荐使用包装类型
        //  1. 因为包装类型是引用类型有属性和方法
        //  2. 包装类型可以赋值为null，基本数据类型不可以(因为以后前后端交互开发，前端可能没有传递数据给后端，后端就要可以接收为null的数据)
        Integer i10 = null;
        // int i11 = null;

        // 4、包装类新增的一些功能。
        // - 把基本数据类型变成字符串。Integer.toString(基本类型)
        // - 把字符串的数值变成基本数据类型。Integer.parseInt(字符串数字)
        String str1 = Double.toString(9.99);
        System.out.println(str1);// 9.99
        String str2 = Boolean.toString(true);
        System.out.println(str2);
        int i12 = Integer.parseInt("100");
    }
}
